
package com.ctrip.corp.obt.shard.sql.parser.permission;


import net.sf.jsqlparser.expression.operators.relational.ExpressionList;

/**
 * 权限处理器
 *
 * @author marco.zheng
 * @since 2022-02-10
 */
public interface PermissionHandler {

    /**
     * 获取组织 ID 值表达式，支持多个 ID 条件查询
     *
     * @return 组织 ID 值表达式
     */
    ExpressionList getOrgIds();

    /**
     * 获取gongsi1 ID 值表达式，支持多个 ID 条件查询
     *
     * @return 组织 ID 值表达式
     */
    ExpressionList getCorpIds();

    /**
     * 获取组织ID字段名
     *
     * @return 组织ID字段名
     */
    String getOrgIdColumn();

    /**
     * 获取公司ID字段名
     *
     * @return 公司ID字段名
     */
    String getCorpIdColumn();

    /**
     * 根据表名判断是否进行过滤
     *
     * @param tableName 表名
     * @return 是否进行过滤, true:表示忽略，false:需要解析多组织字段
     */
    boolean ignoreTable(String tableName);
}
